<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <h3>目标页面</h3>
    <p>读取请求域：${requestScope.attrNameRequest}</p>
    <p>读取会话域：${sessionScope.attrNameSession}</p>
    <p>读取应用域：${applicationScope.attrNameApp}</p>

    <!-- not empty requestScope.attrNameRequest 表示在 requestScope.attrNameRequest 非空时为真 -->
    <c:if test="${not empty requestScope.attrNameRequest}">
        <p>读取请求域：${requestScope.attrNameRequest}有值的</p>
    </c:if>
    <c:if test="${empty requestScope.attrNameRequest}">
        <p>读取请求域：${requestScope.attrNameRequest}没有值</p>
    </c:if>

    <h3>遍历集合数据</h3>
    <table>
        <tr>
            <th>ID</th>
            <th>姓名</th>
            <th>性别</th>
            <th>年龄</th>
        </tr>
        <c:if test="${empty requestScope.list}">
            <tr>
                <td colspan="4">抱歉！没有查询到您所需的数据！</td>
            </tr>
        </c:if>
        <c:if test="${not empty requestScope.list}">
            <!-- items 属性：要遍历的集合对象 -->
            <!-- var 属性：给遍历过程中的每一个集合元素起个名字 -->
            <c:forEach items="${requestScope.list}" var="soldier">
                <tr>
                    <!-- 在遍历过程中，引用 var 属性起的名字，访问具体数据 -->
                    <!-- soldier.soldierName 底层其实是调用 soldier 对象的 getSoldierName() 方法 -->
                    <!-- 不是直接访问成员变量，因为成员变量是 private 私有的 -->
                    <!-- 以后我们会把 getXxx()、setXxx() 方法称之为对象的属性 -->
                    <!-- 属性名和方法名的对应关系：属性名首字母大写，前面加上 get 或 set 就是方法名 -->
                    <!-- 属性名并不要求必须和成员变量名一致 -->
                    <td>${soldier.soldierId}</td>
                    <td>${soldier.soldierName}</td>
                    <td>${soldier.soldierSex}</td>-
                    <td>${soldier.soldierAge}</td>
                </tr>
            </c:forEach>
        </c:if>
    </table>
</body>
</html>
